/**  
 * @Title: dsad.java 
 * @Package com.hanhai.zrb.backend.biz.service.impl 
 * @Description: TODO(用一句话描述该文件做什么) 
 * @author pengbohai  
 * @date 2015年6月16日 下午3:25:51 
 * @version v2.0  
 */ 
package com.hanhai.zrb.api.biz.service.impl;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;

import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;

import com.hanhai.common.util.CommonSMSService;
import com.hanhai.common.util.LuoSiMaoSMS;
import com.hanhai.zrb.api.biz.service.SMSCodeService;
import com.hanhai.zrb.api.biz.util.SMSCodeUtil;

/**       
 * 项目名称：backend   
 * 类名称：SMSCodeServiceImp   
 * 类描述： 短信发送器接口
 * 创建人：pengbohai   
 * 创建时间：2015年6月16日 下午3:25:51   
 * 修改人：pengbohai   
 * 修改时间：2015年6月16日 下午3:25:51   
 * 修改备注：   
 * @Copyright: 2015 汉海集团有限公司 All rights reserved.
 * @version v2
 */
@Service("sMSCodeService")
public class SMSCodeServiceImp implements SMSCodeService{
	
	private static String url = "http://116.213.72.20/SMSHttpService/send.aspx";
	private static String userName = "hbhh";
	private static String passWord = "hbhh";
	private static String defaultPrefix = "【招融宝】";
	
	//@Override
	public String sendSms2(String mobile, String contents) throws IOException {
		//String smscontent = contents + SMSCodeUtil.randomNum();
		String res = "";
		String str = "";
		// Post请求的url，与get不同的是不需要带参数
		URL postUrl = new URL(url);
		// 打开连接
		HttpURLConnection connection = (HttpURLConnection) postUrl
				.openConnection();
		// 设置是否向connection输出，因为这个是post请求，参数要放在
        // http正文内，因此需要设为true
		connection.setDoInput(true);
		connection.setDoOutput(true);
		connection.setRequestMethod("POST");
		// Post 请求不能使用缓存
		connection.setUseCaches(false);
	    // URLConnection.setInstanceFollowRedirects是成员函数，仅作用于当前函数
		connection.setInstanceFollowRedirects(true);
		// 配置本次连接的Content-type，配置为application/x-www-form-urlencoded的
        // 意思是正文是urlencoded编码过的form参数，下面我们可以看到我们对正文内容使用URLEncoder.encode
        // 进行编码
		connection.setRequestProperty("Content-Type",
				"application/x-www-form-urlencoded");
		// 连接，从postUrl.openConnection()至此的配置必须要在connect之前完成，
        // 要注意的是connection.getOutputStream会隐含的进行connect。
		connection.connect();
		DataOutputStream out = new DataOutputStream(
				connection.getOutputStream());
		// 正文，正文内容其实跟get的URL中'?'后的参数字符串一致
		String content = "";
		
		content = content + "username=" + URLEncoder.encode(userName, "utf-8");
		
		content = content + "&password=" + URLEncoder.encode(passWord, "utf-8");
		
		if (StringUtils.isNotBlank(mobile))
		{
			content = content + "&mobile="
			+ URLEncoder.encode(mobile, "utf-8");
		}
		
		if (StringUtils.isNotBlank(contents))
		{
			content = content + "&content="
			+ URLEncoder.encode(defaultPrefix+contents, "utf-8");
		}
	//	connection.addRequestProperty(key, value);
		out.writeBytes(content); 
        out.flush();
        out.close();
		BufferedReader in = new BufferedReader(new InputStreamReader(
				connection.getInputStream(), "UTF-8"));
		String line = "";

		while ((line = in.readLine()) != null) {
			res += line;
		}
		in.close();
        connection.disconnect();
	        
		// 0 表示发送成功
		if ("0".equals(res))
		{
			str = "短信已发送！";
		}
		else
		{
			str = SMSCodeUtil.getErrorValiCode(res);
		}
	        
		return str;
	}

	@Override
	public void sendSms(String mobile, String contents) throws IOException{
		 CommonSMSService.sendSMS(mobile, contents);
	}
}
